package com.jcli._自己的想法._文件流._移动删除;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

/**
 * 获取手机指定目录
 */
public class ADBFileLister {

    public static void main(String[] args) {
        String adbPath = "C:/安卓adb驱动/adb/adb.exe";  // 替换为你的 adb 路径
        String deviceID = null;  // 如果只连接了一个设备，可以为 null
        // String deviceID = "RF8M73MHTYZ";  // 如果只连接了一个设备，可以为 null

        // Android 文件路径
        String androidPath = "/storage/emulated/0/BaiduNetdisk/我的学习/孟2024/【No1374】SpringBoot+Vue 开发博客系统完整项目";

        List<String> fileList = listFiles(adbPath, deviceID, androidPath);

        // 打印文件列表
        for (String file : fileList) {
            System.out.println(file);
        }
    }

    private static List<String> listFiles(String adbPath, String deviceID, String androidPath) {
        List<String> fileList = new ArrayList<>();

        // 构建 ADB 命令
        List<String> command = new ArrayList<>();
        command.add(adbPath);
        if (deviceID != null) {
            command.add("-s");
            command.add(deviceID);
        }
        command.add("shell");
        command.add("ls");
        command.add("-R"); // 递归列出子目录层次

        // 注意：这里加入了两个单引号，是为了处理文件名中包含空格的情况
        command.add("'" + androidPath + "'");
        // command.add(androidPath);

        // 执行 ADB 命令
        try {
            ProcessBuilder processBuilder = new ProcessBuilder(command);
            Process process = processBuilder.start();

            // 读取命令输出
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                fileList.add(line);
            }

            process.waitFor();
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }

        return fileList;
    }
}
